#include <stdio.h>
#include "tree.h"
#include "symbol.h"
int run3Error;
int run3(BODY *root, SymbolTable *symboltable);
void run3DECL_LIST(DECL_LIST *decl_list);
void run3DECL(DECLARATION *declaration);
void run3STATEMENT_LIST(STATEMENT_LIST *statement_list, SymbolTable *symboltable, HEAD *head);
void run3STATEMENT(STATEMENT *statement, SymbolTable *symboltable, HEAD *head);
TYPE *run3EXPRESSION(EXPRESSION *expression, SymbolTable *symboltable);
TYPE *run3VARIABLE(VARIABLE *variable, SymbolTable *symboltable);
int run3COMPARE_FUNC(EXP_LIST *exp_list, VAR_DECL_LIST *var_decl_list, SymbolTable *symboltable);
TYPE *run3TERM(TERM *term, SymbolTable *symboltable);
int run3COMPARE_RETURN(TYPE *exp_type, TYPE *head_type, SymbolTable *next, SymbolTable *symboltable, SymbolTable *compareTable1, SymbolTable *compareTable2);
int run3COMPARE_RETURN_RECORD(VAR_DECL_LIST *record1, VAR_DECL_LIST *record2, SymbolTable *next, SymbolTable *symboltable, SymbolTable *compareTable1, SymbolTable *compareTable2);
int run3COMPARE_TYPES(TYPE *type1, TYPE *type2, SymbolTable *symboltable, SymbolTable *compareTable1, SymbolTable *compareTable2);
int run3COMPARE_VAR_DECL_LIST(VAR_DECL_LIST *record1, VAR_DECL_LIST *record2, SymbolTable *symboltable, SymbolTable *compareTable1, SymbolTable *compareTable2);
